Appendix A, which is part of the present disclosure, contains VERILOG source code for implementing one embodiment of this invention as described more completely below.
A portion of the present disclosure contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
A video stream is a sequence of video frames where each frame is a still image. A video player, such as a DVD player, displays one frame after another at approximately 30 frames per second to generate a video. In MPEG-2 format, frames are digitized so that each pixel is represented by a brightness component of luma (xe2x80x9cYxe2x80x9d) and two color components of chroma blue (xe2x80x9cCbxe2x80x9d) and chroma red (xe2x80x9cCrxe2x80x9d). The color of a pixel is black when its luma value is at a minimum regardless of its chroma blue and chroma red values. Conversely, the color of the pixel is white when its luma value is at a maximum regardless of its chroma blue and chroma red values. Luma, chroma blue, and chroma red have a nominal range of 0 to 255.
A DVD player can read a DVD bitstream from a DVD disk and display on a monitor a main video (that occupies a majority of the area of the monitor) superimposed by a subpicture (hereinafter xe2x80x9cSPUxe2x80x9d). The subpicture normally occupies a small area of the monitor (e.g., occupies 10% of the total area). A DVD bitstream contains, among other data three elementary streams: a main video elementary stream, an audio elementary stream, and a SPU elementary stream. Subpictures are xe2x80x9c[g]raphic bitmap overlays used in DVD-Video to create subtitles, captions, karaoke lyrics, menu hightlighting effects, and so on.xe2x80x9d See the book entitled xe2x80x9cDVD Demystifiedxe2x80x9d by Jim Taylor, p. 424, McGraw-Hill, 1999. Chapter 4 and the glossary of DVD Demystified are hereby incorporated by reference. In one example, the main video is a movie and the SPU is the subtitle for the movie.
In addition to the main video superimposed with the SPU, the DVD player can display (see FIG. 1) an on-screen display (xe2x80x9cOSDxe2x80x9d) of the DVD controls, such as a volume bar, superimposed over the main video. In some DVD players, fade in and fade out are used to replace a background color with the main video (or vice versa). During such replacement, the OSD does not fade in and fade out with the main video so that consumers continue to view the OSD during the transition from the background color to the main video. However, fading (in or out) of the main video affects the colors of the pixels in the portion of the OSD that is superimposed on the main video, so that the pixels in OSD change colors during the fading.
In one embodiment, a fade circuit (also called xe2x80x9cfaderxe2x80x9d) supports transition between display of a video (that has a first portion to be changed and a second portion left unchanged) and display of a background color (such as blue) by adjusting two or more components (e.g., the luma component (Y) and one or both of chroma components (Cb and Cr)) of one or more to-be-displayed pixels (e.g., all pixels in the second portion that is to be left unchanged or alternatively all pixels of the video). The adjustment includes, for example, one or more arithmetic operations, so that the one or more pixels maintain color at two or more moments during the transition (preferably at all times in the transition). By adjusting the luma and chroma components together, one or more colors of the second portion remain constant during the transition between display of the video and the background color. Maintaining colors of the second portion allows a user to clearly see the information displayed by the second portion during the transition.
In one specific implementation, the luma component is adjusted by subtracting (or adding) a fade factor (that changes over time) to form a gradually changing luma component. In this implementation, the chroma components are simultaneously adjusted by another arithmetic operation. In one example, the chroma components are scaled by (1) subtracting a predetermined value from each chroma component to form a resultant, (2) multiplying the resultant with a scale factor (that changes over time) to form a product, and (3) adding the predetermined value to the product to form a faded chroma component. Preferably, but not necessary, the same predetermined value and the same scale factor are used for the two chroma components.
In one embodiment, a mix circuit combines the faded components of a first video (hereinafter referred to as xe2x80x9cfirst pixel componentsxe2x80x9d) with components of a second video (hereinafter referred to as xe2x80x9csecond pixel componentsxe2x80x9d), for example using an arithmetic operation. The combined (mixed) components (hereinafter called xe2x80x9cmixed pixel componentsxe2x80x9d) are displayed on a monitor wherein the second video is superimposed over the first video. To mix a first pixel component with a second pixel component, one example of a mix circuit adds (1) the product of the first pixel component and a mix weight (mw) with (2) the product of the second pixel component and another mix weight (1xe2x88x92mw). The same results can be accomplished by adding (1) the second pixel component to (2) the product of a mix weight (mw) and the difference between the first pixel component and the second pixel component.